package algoritmobanchiere;

/**
 * Questa interfaccia rappresenta un banca secondo il modello dell'algoritmo
 * del banchiere di Dijkstra.
 */
public interface Banca {
	
	/**
	 * Verifica se una risorsa di un certo tipo puo' essere concessa senza che
	 * la banca passi in uno stato non sicuro.
	 * 
	 * @param rs
	 * @return true se la risorsa puo' essere concessa, false se la risorsa non
	 * puo' essere concesso o se non puo' essere garantito uno stato sicuro.
	 */
	boolean concediRisorsa(Risorsa rs);
	
	/**
	 * Disimpegna una risorsa di un certo tipo precedentemente concessa.
	 * 
	 * @param rs risorsa da disimpegnare
	 */
	void disimpegnaRisorsa(Risorsa rs);
	
}